package org.tis.tools.starter.mybatisplus.querykit.unit;

import com.baomidou.mybatisplus.mapper.Wrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.tis.tools.model.exception.ToolsRuntimeException;
import org.tis.tools.starter.mybatisplus.querykit.enums.QueryLogic;
import org.tis.tools.starter.mybatisplus.querykit.model.BaseQuery;
import org.tis.tools.starter.mybatisplus.querykit.model.IQuery;
import org.tis.tools.starter.mybatisplus.querykit.util.Utils;

import java.util.List;

import static org.tis.tools.starter.mybatisplus.querykit.enums.QueryOperator.LIKE;

/**
 * description:
 *
 * @author zhaoch
 * @date 2018/10/9
 **/
public class LikeQuery<T> extends BaseQuery implements IQuery<T> {

    private static final Integer PARAM_SIZE = 2;

    private String column;

    private String params;

    public LikeQuery(QueryLogic logic, List<String> params) {
        super(logic, LIKE);
        if (CollectionUtils.isEmpty(params) || params.size() < PARAM_SIZE) {
            throw new ToolsRuntimeException("CTL-400", "查询参数格式错误！");
        }
        this.column = Utils.humpToUnderline(params.get(0));
        this.params = params.get(1);

    }

    @Override
    public void handleWrapper(Wrapper<T> wrapper) {
        wrapper.like(!StringUtils.isAnyBlank(column, params), column, params);
    }
}